home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Commun⁄Network / Telnet 2.5.src.ThinkC / source / TCPPB.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-11-09  |  5.1 KB  |  250 lines  |  [TEXT/KAHL]

  1. /* 
  2.     TCPPB.h    
  3.     C definitions of parameter block entries needed for TCP calls
  4.  
  5.     Copyright Apple Computer, Inc. 1988-89
  6.     All rights reserved
  7.     
  8. */
  9.  
  10.  
  11. /* Command codes */
  12.  
  13. #define TCPCreate            30
  14. #define    TCPPassiveOpen        31
  15. #define TCPActiveOpen        32
  16. #define TCPSend                34
  17. #define TCPNoCopyRcv        35
  18. #define TCPRcvBfrReturn        36
  19. #define TCPRcv                37
  20. #define TCPClose            38
  21. #define TCPAbort            39
  22. #define TCPStatus            40
  23. #define TCPExtendedStat        41
  24. #define TCPRelease            42
  25. #define TCPGlobalInfo        43
  26. #define TCPCtlMax            49
  27.  
  28. typedef enum TCPEventCode {
  29.     TCPClosing = 1,
  30.     TCPULPTimeout,
  31.     TCPTerminate,
  32.     TCPDataArrival,
  33.     TCPUrgent,
  34.     TCPICMPReceived,
  35.     lastEvent = 65535
  36. };
  37.  
  38. typedef enum TCPTerminationReason {
  39.     TCPRemoteAbort = 2,
  40.     TCPNetworkFailure,
  41.     TCPSecPrecMismatch,
  42.     TCPULPTimeoutTerminate,
  43.     TCPULPAbort,
  44.     TCPULPClose,
  45.     TCPServiceError,
  46.     lastReason = 65535
  47. }; 
  48.  
  49. #if 0
  50. typedef pascal void (*TCPNotifyProc) (
  51.         StreamPtr tcpStream,  
  52.         unsigned short eventCode,  
  53.         Ptr userDataPtr,  
  54.         unsigned short terminReason , 
  55.         struct ICMPReport *icmpMsg );
  56.  
  57. typedef void (*TCPIOCompletionProc) (struct TCPiopb *iopb);
  58. #else
  59. typedef void *TCPNotifyProc;
  60. typedef void *TCPIOCompletionProc;
  61. #endif
  62.  
  63. typedef unsigned short tcp_port;
  64.  
  65. typedef unsigned char byte;
  66.  
  67. enum {                    /* ValidityFlags */
  68.     timeoutValue = 0x80,
  69.     timeoutAction = 0x40,
  70.     typeOfService = 0x20,
  71.     precedence = 0x10
  72. };
  73.  
  74. enum {                    /* TOSFlags */
  75.     lowDelay = 0x01,
  76.     throughPut = 0x02,
  77.     reliability = 0x04
  78. };
  79.  
  80. typedef struct TCPCreatePB {
  81.     Ptr         rcvBuff;
  82.     unsigned long rcvBuffLen;
  83.     TCPNotifyProc     notifyProc;
  84.     Ptr         userDataPtr;
  85. }TCPCreatePB;
  86.  
  87. typedef struct TCPOpenPB {
  88.     byte ulpTimeoutValue;
  89.     byte ulpTimeoutAction;
  90.     byte validityFlags;
  91.     byte commandTimeoutValue;
  92.     ip_addr remoteHost;
  93.     tcp_port remotePort;
  94.     ip_addr localHost;
  95.     tcp_port localPort;
  96.     byte tosFlags;
  97.     byte precedence;
  98.     Boolean dontFrag;
  99.     byte timeToLive;
  100.     byte security;
  101.     byte optionCnt;
  102.     byte options[40];
  103.     Ptr userDataPtr;
  104. }TCPOpenPB;
  105.     
  106. typedef struct TCPSendPB {
  107.     byte ulpTimeoutValue;
  108.     byte ulpTimeoutAction;
  109.     byte validityFlags;
  110.     Boolean pushFlag;
  111.     Boolean urgentFlag;
  112.     Ptr wdsPtr;
  113.     unsigned long sendFree;
  114.     unsigned short sendLength;
  115.     Ptr userDataPtr;
  116. }TCPSendPB;
  117.     
  118.  
  119. typedef struct TCPReceivePB {        /* for receive and return rcv buff calls */
  120.     byte commandTimeoutValue;
  121.     byte filler;
  122.     Boolean markFlag;
  123.     Boolean urgentFlag;
  124.     Ptr rcvBuff;
  125.     unsigned short rcvBuffLen;
  126.     Ptr rdsPtr;
  127.     unsigned short rdsLength;
  128.     unsigned short secondTimeStamp;
  129.     Ptr userDataPtr;
  130. }TCPReceivePB;
  131.     
  132. typedef struct TCPClosePB {
  133.     byte ulpTimeoutValue;
  134.     byte ulpTimeoutAction;
  135.     byte validityFlags;
  136.     Ptr userDataPtr;
  137. }TCPClosePB;
  138.     
  139. typedef struct HistoBucket {
  140.     unsigned short value;
  141.     unsigned long counter;
  142. };
  143.     
  144. #define NumOfHistoBuckets    7
  145.  
  146. typedef struct TCPConnectionStats {
  147.     unsigned long dataPktsRcvd;
  148.     unsigned long dataPktsSent;
  149.     unsigned long dataPktsResent;
  150.     unsigned long bytesRcvd;
  151.     unsigned long bytesRcvdDup;
  152.     unsigned long bytesRcvdPastWindow;
  153.     unsigned long  bytesSent;
  154.     unsigned long bytesResent;
  155.     unsigned short numHistoBuckets;
  156.     struct HistoBucket sentSizeHisto[NumOfHistoBuckets];
  157.     unsigned short lastRTT;
  158.     unsigned short tmrSRTT;
  159.     unsigned short rttVariance;
  160.     unsigned short tmrRTO;
  161.     byte sendTries;
  162.     byte sourchQuenchRcvd;
  163. }TCPConnectionStats;
  164.     
  165. typedef struct TCPStatusPB {
  166.     byte ulpTimeoutValue;
  167.     byte ulpTimeoutAction;
  168.     long unused;
  169.     ip_addr remoteHost;
  170.     tcp_port remotePort;
  171.     ip_addr localHost;
  172.     tcp_port localPort;
  173.     byte tosFlags;
  174.     byte precedence;
  175.     byte connectionState;
  176.     unsigned short sendWindow;
  177.     unsigned short rcvWindow;
  178.     unsigned short amtUnackedData;
  179.     unsigned short amtUnreadData;
  180.     Ptr securityLevelPtr;
  181.         /* HEMS-HEMP stats */
  182.     unsigned long sendUnacked;
  183.     unsigned long sendNext;
  184.     unsigned long congestionWindow;
  185.     unsigned long rcvNext;
  186.     unsigned long srtt;
  187.     unsigned long lastRTT;
  188.     unsigned long sendMaxSegSize;
  189.     struct TCPConnectionStats *connStatPtr;
  190.     Ptr userDataPtr;
  191. }TCPStatusPB;
  192.     
  193. typedef struct TCPAbortPB {
  194.     Ptr userDataPtr;
  195. }TCPAbortPB;
  196.     
  197. typedef struct TCPParam {
  198.     unsigned long tcpRtoA;
  199.     unsigned long tcpRtoMin;
  200.     unsigned long tcpRtoMax;
  201.     unsigned long tcpMaxSegSize;
  202.     unsigned long tcpMaxConn;
  203.     unsigned long tcpMaxWindow;
  204. }TCPParam;
  205.  
  206. typedef struct TCPStats {
  207.     unsigned long tcpConnAttempts;
  208.     unsigned long tcpConnOpened;
  209.     unsigned long tcpConnAccepted;
  210.     unsigned long tcpConnClosed;
  211.     unsigned long tcpConnAborted;
  212.     unsigned long tcpOctetsIn;
  213.     unsigned long tcpOctetsOut;
  214.     unsigned long tcpOctetsInDup;
  215.     unsigned long tcpOctetsRetrans;
  216.     unsigned long tcpInputPkts;
  217.     unsigned long tcpOutputPkts;
  218.     unsigned long tcpDupPkts;
  219.     unsigned long tcpRetransPkts;
  220. }TCPStats;
  221.     
  222. typedef struct TCPGlobalInfoPB {
  223.     struct TCPParam *tcpParamPtr;
  224.     struct TCPStats *tcpStatsPtr;
  225.     unsigned long *tcpCDBTable;
  226.     Ptr userDataPtr;
  227. }TCPGlobalInfoPB;
  228.     
  229. typedef struct TCPiopb {
  230.     char                 fill12[12];
  231.     TCPIOCompletionProc    ioCompletion;
  232.     short                 ioResult;
  233.     char                 *ioNamePtr;        
  234.     short                 ioVRefNum;        
  235.     short                ioCRefNum;            
  236.     short                 csCode;
  237.     StreamPtr             tcpStream;                
  238.     union {
  239.         struct TCPCreatePB create;
  240.         struct TCPOpenPB open;
  241.         struct TCPSendPB send;
  242.         struct TCPReceivePB receive;
  243.         struct TCPClosePB close;
  244.         struct TCPAbortPB abort;
  245.         struct TCPStatusPB status;
  246.         struct TCPGlobalInfoPB globalInfo;
  247.         } csParam;
  248. }TCPiopb;
  249.     
  250.